#version 450
layout(row_major) uniform;
layout(row_major) buffer;

#line 11760 0
struct _MatrixStorage_float4x4_ColMajorstd140_0
{
    vec4  data_0[4];
};


#line 8 1
struct ECSGlobalUbo_std140_0
{
    _MatrixStorage_float4x4_ColMajorstd140_0 projection_0;
    _MatrixStorage_float4x4_ColMajorstd140_0 view_0;
    _MatrixStorage_float4x4_ColMajorstd140_0 inverseView_0;
    vec4 ambientLightColor_0;
};




layout(binding = 0)
layout(std140) uniform block_ECSGlobalUbo_std140_0
{
    _MatrixStorage_float4x4_ColMajorstd140_0 projection_0;
    _MatrixStorage_float4x4_ColMajorstd140_0 view_0;
    _MatrixStorage_float4x4_ColMajorstd140_0 inverseView_0;
    vec4 ambientLightColor_0;
}ubo_0;

#line 11
struct _MatrixStorage_float4x4_ColMajorstd430_0
{
    vec4  data_1[4];
};


#line 12
struct PushConstants_std430_0
{
    _MatrixStorage_float4x4_ColMajorstd430_0 modelMatrix_0;
    _MatrixStorage_float4x4_ColMajorstd430_0 normalMatrix_0;
};


#line 16
layout(push_constant)
layout(std430) uniform block_PushConstants_std430_0
{
    _MatrixStorage_float4x4_ColMajorstd430_0 modelMatrix_0;
    _MatrixStorage_float4x4_ColMajorstd430_0 normalMatrix_0;
}push_0;

#line 12015 0
layout(location = 0)
in vec3 position_0;


#line 12015
layout(location = 1)
in vec3 color_0;


#line 12015
layout(location = 2)
in vec3 normal_0;


#line 25 1
layout(location = 3)
in vec2 uv_0;


#line 25
layout(location = 0)
out vec3 fragColor_0;


#line 25
layout(location = 1)
out vec3 fragPosWorld_0;


#line 25
layout(location = 2)
out vec3 fragNormalWorld_0;


#line 25
layout(location = 3)
out vec2 fragUV_0;


#line 25
void main()
{

#line 37
    vec4 _S1 = vec4(position_0, 1.0);

#line 37
    vec4 _S2 = (((((((((_S1) * (mat4x4(push_0.modelMatrix_0.data_1[0][0], push_0.modelMatrix_0.data_1[1][0], push_0.modelMatrix_0.data_1[2][0], push_0.modelMatrix_0.data_1[3][0], push_0.modelMatrix_0.data_1[0][1], push_0.modelMatrix_0.data_1[1][1], push_0.modelMatrix_0.data_1[2][1], push_0.modelMatrix_0.data_1[3][1], push_0.modelMatrix_0.data_1[0][2], push_0.modelMatrix_0.data_1[1][2], push_0.modelMatrix_0.data_1[2][2], push_0.modelMatrix_0.data_1[3][2], push_0.modelMatrix_0.data_1[0][3], push_0.modelMatrix_0.data_1[1][3], push_0.modelMatrix_0.data_1[2][3], push_0.modelMatrix_0.data_1[3][3]))))) * (mat4x4(ubo_0.view_0.data_0[0][0], ubo_0.view_0.data_0[1][0], ubo_0.view_0.data_0[2][0], ubo_0.view_0.data_0[3][0], ubo_0.view_0.data_0[0][1], ubo_0.view_0.data_0[1][1], ubo_0.view_0.data_0[2][1], ubo_0.view_0.data_0[3][1], ubo_0.view_0.data_0[0][2], ubo_0.view_0.data_0[1][2], ubo_0.view_0.data_0[2][2], ubo_0.view_0.data_0[3][2], ubo_0.view_0.data_0[0][3], ubo_0.view_0.data_0[1][3], ubo_0.view_0.data_0[2][3], ubo_0.view_0.data_0[3][3]))))) * (mat4x4(ubo_0.projection_0.data_0[0][0], ubo_0.projection_0.data_0[1][0], ubo_0.projection_0.data_0[2][0], ubo_0.projection_0.data_0[3][0], ubo_0.projection_0.data_0[0][1], ubo_0.projection_0.data_0[1][1], ubo_0.projection_0.data_0[2][1], ubo_0.projection_0.data_0[3][1], ubo_0.projection_0.data_0[0][2], ubo_0.projection_0.data_0[1][2], ubo_0.projection_0.data_0[2][2], ubo_0.projection_0.data_0[3][2], ubo_0.projection_0.data_0[0][3], ubo_0.projection_0.data_0[1][3], ubo_0.projection_0.data_0[2][3], ubo_0.projection_0.data_0[3][3]))));

    vec3 _S3 = (((_S1) * (mat4x4(push_0.modelMatrix_0.data_1[0][0], push_0.modelMatrix_0.data_1[1][0], push_0.modelMatrix_0.data_1[2][0], push_0.modelMatrix_0.data_1[3][0], push_0.modelMatrix_0.data_1[0][1], push_0.modelMatrix_0.data_1[1][1], push_0.modelMatrix_0.data_1[2][1], push_0.modelMatrix_0.data_1[3][1], push_0.modelMatrix_0.data_1[0][2], push_0.modelMatrix_0.data_1[1][2], push_0.modelMatrix_0.data_1[2][2], push_0.modelMatrix_0.data_1[3][2], push_0.modelMatrix_0.data_1[0][3], push_0.modelMatrix_0.data_1[1][3], push_0.modelMatrix_0.data_1[2][3], push_0.modelMatrix_0.data_1[3][3])))).xyz;

#line 39
    mat4x4 _S4 = mat4x4(push_0.normalMatrix_0.data_1[0][0], push_0.normalMatrix_0.data_1[1][0], push_0.normalMatrix_0.data_1[2][0], push_0.normalMatrix_0.data_1[3][0], push_0.normalMatrix_0.data_1[0][1], push_0.normalMatrix_0.data_1[1][1], push_0.normalMatrix_0.data_1[2][1], push_0.normalMatrix_0.data_1[3][1], push_0.normalMatrix_0.data_1[0][2], push_0.normalMatrix_0.data_1[1][2], push_0.normalMatrix_0.data_1[2][2], push_0.normalMatrix_0.data_1[3][2], push_0.normalMatrix_0.data_1[0][3], push_0.normalMatrix_0.data_1[1][3], push_0.normalMatrix_0.data_1[2][3], push_0.normalMatrix_0.data_1[3][3]);
    vec3 _S5 = normalize((((normal_0) * (mat3x3(_S4[0].xyz, _S4[1].xyz, _S4[2].xyz)))));

#line 40
    fragColor_0 = color_0;

#line 40
    fragPosWorld_0 = _S3;

#line 40
    fragNormalWorld_0 = _S5;

#line 40
    fragUV_0 = uv_0;

#line 40
    gl_Position = _S2;


    return;
}

